package Gather.ExerciseDome;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;

/**
 * ClassName:Exercise003
 * Package:Gather.ExerciseDome
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/2/21-20:24
 * @Version:v1.0
 */
public class Exercise003 {
    /*
     * 班级里有N个学生
     * 要求：
     * 被点到的学生不会再被点到
     * 但是如果班级中所有的学生都点完了,需要重新开启第二轮点名*/
    public static void main(String[] args) {
        //创建集合
        ArrayList<String> list1 = new ArrayList<>();
        //添加元素
        Collections.addAll(list1, "张鑫", "郭永杰", "清清", "慧慧", "林黛玉");
        //创建一个临时的集合,用来存已经被点到的学生的名字
        ArrayList<String> list2 = new ArrayList<>();

        //外循环：表示轮数
        for (int i = 1; i < 10; i++) {
            System.out.println("==============第" + i + "轮点名开始了==============");
            //获取集合的长度
            int count = list1.size();

            //随机点名
//        String name = list.get(index);
//        list.remove(name);
            //第一次随机的时候:i=0长度10
            //第二次随机的时候:i=1长度9
            //第三次随机的时候:i=2长度8
            //第四次随机的时候:i=3长度7
            //第五次随机的时候:i=4长度6
            //第六次随机的时候:i=5长度5  循环就会停止
            //内循环:表示每一轮中随机循环抽取的过程
            for (int j = 0; j < count; j++) {
                Random r = new Random();
                int index = r.nextInt(list1.size());
                String name = list1.remove(index);//此时集合的长度就变成了9--
                list2.add(name);
                System.out.println(name);
            }
            //此时表示一轮点名结束
            //list1已经变为空集合,list2为满集合
            list1.addAll(list2);//批量添加
            //清空list2
            list2.clear();
        }
    }
}
